export default {
	namespaced: true,
	state() {
		return {
			// 初始的状态数据,读取数据
			carts: uni.getStorageSync('carts') || [],
		}
	},
	getters: {
		//加入购物车商品的数量
		cartCount(state) {
			return state.carts.length
		},
		//小选的勾选状态
		allchecked(state) {
			// 是否每个商品的 goods_state 属性都为 true
			return state.carts.every(item => item.goods_state)
		},
		//累加数量
		checkCount(state) {
			return state.carts.reduce((count, item) => {
				//如果没有勾选，就不做累加
				if (!item.goods_state) return count
				//将商品数量累加
				return count += item.goods_number
			}, 0)
		},
		//合计价格
		amount(state) {
			return state.carts.reduce((amount, item) => {
				if (!item.goods_state) return amount
				//得到总计的价格
				return amount += item.goods_price * item.goods_number
			}, 0)
		}
	},
	mutations: {
		//商品减操作
		decreaseCount(state, index) {
			//最少选择一件
			if (state.carts[index].item.goods_number <= 1) return
			state.carts[index].goods_number--
		},
		//商品加操作
		increaseCount(state, index) {
			state.carts[index].goods_number += 1
		},
		//全选的勾选状态
		toggleAll(state, goods_state) {
			// 遍历设置每个商品的选中状态
			state.carts.forEach(item => item.goods_state = !goods_state);
			//把小选的勾选状态存入本地
			this.commit('m_cart/saveToStorage')
		},
		//添加购物车
		addToCart(state, goods) {
			// 查找是否已经存在相同商品
			const result = state.carts.find(item => item.goods_id === goods.goods_id);
			// 没有存在相同商品
			if (!result) {
				state.carts.push(goods);
			} else {
				// 存在相同商品时，将数量加 1
				result.goods_number += 1
			}
			// 存入本地
			this.commit('m_cart/saveToStorage');
		},
		saveToStorage(state) {
			// 将购物车数据存入本地
			uni.setStorageSync('carts', state.carts)
		},
		//切换状态
		toggleState(state, index) {
			// 来回切换
			state.carts[index].goods_state = !state.carts[index].goods_state;
			//把小选的勾选状态存入本地
			this.commit('m_cart/saveToStorage')
		}
	}
}
